1.问题反馈与解决
问题1.在设计当按下button按钮时,修改EditText的内容,不知道该如何将两者联系起来?
设置监听器,将Button和EditText两者联系起来(见图1)。首先,获取事件源,通过findViewById获取;其次,实现事件监听类,实现监听器接口;将监听器注册到组件上。(注:该方法是在onCreate()方法里实现的,且show和bn变量已在前面声明)
图 1 监听器实现
问题2.设计多个RadioButton选项,没有做到在多个选项中,只能选择一项?
经过查阅资料,发现需要加上RadioGroup这个组件,然后将RadioButton加入到RadioGroup组件内(见图2)。
图 2 RadioGroup组件
问题3.设计登录对话框,程序对用户名和密码的判断有错误,以及密码是明文显示?
在编写if语句时,没有注意语法问题,对“=”的理解出了错误,当成了是等于符号,以至于出现了语法错误(见图3),经过修改后,语法错误解决。密码显示是明文显示,是我对EditText中的显示文本的属性没有进行特殊设置(见图4),后来加上password属性,并把其值设为true(见图5),密码明文显示问题解决。
图 3 前后代码对比
图 4 修改前的EditText
图 5 修改后的EditText
问题4.制作上下文菜单,点击屏幕一段时间(超过2秒)没有事件响应,只有当点击屏幕特定界面时,才有事件响应?
“浮动上下文菜单”,该操作方式类似于普通桌面程序中的“右键菜单”,当用户点击界面元素超过2秒后,将启动注册到该界面元素的上下文菜单,显示方式类似于对话框,系统每次只能显示一个上下文菜单,用户从菜单中仅可选择一项操作。在仔细阅读了这个说明后,注意到了其中一个词“注册”,这个词把上下文菜单进行了很好的诠释,于是又重看了代码,知道了问题的所在。上下文菜单是注册到界面元素上的,而我的代码中,是把其注册到TextView上(见图6),只有当点击TextView这个元素时,才有事件响应。
图 6 菜单注册
2.分析与理解
每个组件都必须有android:layout_width(宽度),android:layout_height(高度)属性,其值可以是定值,但常用的是根据容器或内容变化而变化,有match_parent:同所在容器的高度或宽度一致;wrap_content:宽度或高度根据内容的变化而变化。
线性布局:所有的子元素都按照垂直或水平的顺序在界面上排列,可以使用android:orientation属性来修改对齐方向。垂直排列android:orientation的值为vertical,水平排列android:orientation的值为horizontal。
item元素有多个属性,用户可以使用这些属性定义菜单的外观和行为等。
(1)android:id 菜单项的ID,每个菜单的唯一资源ID。
(2)android:icon 菜单项的图标。
(3)android:title 菜单项标题
(4)android:showAsAction :显示在操作栏中的时间和方式等。
group用来创建菜单组。所谓菜单组是指该组内菜单项具有共同特征。用户可以:
(1)使用 setGroupVisible() 显示或隐藏所有项目
(2)使用 setGroupEnabled() 启用或禁用所有项目
(3)使用 setGroupCheckable() 指定所有项目是否可选中
group经常使用的属性除了android:id之外,最常用的是android:checkableBehavior属性,该属性取值如下:
(1)single:组中只有一个项目可以选中(单选按钮)
(2)all:所有项目均可选中(复选框)
(3)none:所有项目均无法选中
TextView继承自View类,主要用来向用户显示文本内容,一般不允许编辑。文本框EditText类继承自TextView类,允许用户对文本框输入文本、进行编辑,文本框包括单行或多行。当程序焦点在文本框时,系统会自动出现键盘,让用户输入文本。此外,还可以对文本进行过剪切、复制和粘贴等动作。